import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;

/**
 * Class article, sous classe d'un document.
 *
 */
public class Article extends Document implements Serializable {

	/**************************************************************************************************************
	 * Les attributs statics
	 */
	private static final long serialVersionUID = 1L;

	/**************************************************************************************************************
	 * Les attributs
	 */
	private int _pageDebut;
	private int _numero;
	private Parution _parution;
	private HashSet<Auteur> _lesAuteurs;
	

	/**************************************************************************************************************
	 * Méthodes
	 */
		
	/**
	 * Constructeur de l'article
	 * @param numero : Numéro de l'article
	 * @param t : le titre
	 * @param page : Le nuéro de la page
	 * @param p : La partution dans laquelle se trouve l'article
	 */
	public Article(int numero, String t, int page, Parution p) {
		super(t);
		this.setNumero(numero);
		this.setPageDebut(page);
		this.setParution(p);
	}
	

	/**************************************************************************************************************
	 * SETTERS
	 */
	
	/**
	 * Affecter le numéro
	 * @param numero
	 */
	private void setNumero(int numero) {
		// TODO Auto-generated method stub
		_numero = numero;
	}
	
	/**
	 * Redéfinition de la méthode de la class Document
	 * Lier l'article au mot clé.
	 * @param a : Le MotCle
	 */
	public void setMotCle(MotCle a){
		super.setMotCle(a);
		a.setArticle(this);
	}
	
	/**
	 * 
	 * @param p
	 */
	public void setPageDebut(int p){
		_pageDebut = p;
	}
	
	/**
	 * Lie la parution à l'article
	 * @param p
	 */
	public void setParution(Parution p){
		_parution = p;
	}
	
	/**
	 * lie l'auteur à l'article et lie l'article à l'auteur
	 * @param a
	 */
	public void setAuteur(Auteur a){
		this.getAuteurs().add(a);
		a.setArticle(this);
	}
	
	/**
	 * 
	 * @param a
	 */
	public void setAuteurs(HashSet<Auteur> auteurs){
		_lesAuteurs = auteurs;
	}

	/**************************************************************************************************************
	 * GETTERS
	 */
	
	/**
	 * 
	 * @return la page de début de l'article
	 */
	public int getPageDebut(){
		return _pageDebut ;
	}
	
	/**
	 * 
	 * @return la partuion lié a l'article
	 */
	public Parution getParution(){
		return _parution;
	}
	
	/**
	 * 
	 * @return tout les auteurs lié à l'article
	 */
	public HashSet<Auteur> getAuteurs(){
		return _lesAuteurs;
	}
	
}
